#include "../header.h"

//1.创建新的线程。

/**
 * @函数原型:  int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
 * @函数功能: 创建一个新的线程。
 * @参数说明: 
 * @       参数1: thread  新创建的线程的线程号。
 * @       参数2: attr ： 线程属性。NULL.默认非分离属性。
 * @       参数3: void *(*start_routine) (void *) 函数指针：返回值void *  ,参数是void*。
 *         参数4:主线程与子线程的传递的数据。
 * @返回值: 成功返回0,否则返回错误码
 * @param {int} argc
 */

//线程1
void* pthread_fun(void *arg)
{   
    printf("this is %s start\n",__func__);
    //输出进程号 - 输出线程号。
    printf("this is pthread_fun:%d %lu\n",getpid(),pthread_self());
    printf("this is %s end\n",__func__);

    return NULL;
}

//主线程
int main(int argc, char const *argv[])
{
    //tid就是子线程的线程号。
    pthread_t tid = 0 ;
    //tid,线程属性，线程入口函数，主线程给子线程传递的数据。 
    int flg = pthread_create(&tid,NULL,pthread_fun,NULL);
    printf("flg = %d\n",flg);
    printf("主线程的线程号：%lu 主线程的进程号:%d 子线程的线程号:%lu\n",pthread_self(),getpid(),tid);
    //主线程执行完毕，退出，整个空间立即释放，子线程没有时间执行自己的代码。
    sleep(1);

    return 0;
}
